Scalable connectivity verification using conditional cut-points

ABSTRACT

Provided is a method for performing connectivity verification of an integrated circuit device. In embodiments of the invention, the method includes creating a directed graph representation of integrated circuit device. The method can further include determining target gates referred to as trace signals within integrated circuit device. The method can further include creating hierarchical representation of trace signals and determining nested trace signals. The method can further include determining one or more locations for cut points for non-nested trace signals. Thereafter, performing connectivity verification using the one or more locations for cut points. Finally improving the scalability of connectivity verification by utilizing hierarchical decomposition embodiment of the invention.

DOMESTIC PRIORITY

This application is a continuation of U.S. patent application Ser. No.15/922,272, filed Mar. 15, 2018, the disclosure of which is incorporatedby reference herein in its entirety.

BACKGROUND

The present invention relates to semiconductor design. Morespecifically, the present invention relates to methods and systems forverifying semiconductor designs using hardware description language.

When designing an integrated circuit device it is desirable to test theintegrated circuit by inputting signals and determining if the correctoutput signal is generated. This can occur both on externally availablesignal locations (such as the pins of an integrated circuit) andinternally within the integrated circuit. Within an integrated circuit,areas of an integrated circuit can be divided into “blocks.” It is thendetermined if signals travel to and from various blocks within aspecified design time. This can be called connectivity verificationbecause one is determining whether each block within the integratedcircuit device is correctly connected to other blocks within theintegrated circuit device. A “trace bus” is a common logic componentverified using connectivity verification, propagation certain signals ofa chip to certain endpoints where they can be read to on-chip evaluationcircuits or even read out of the chip for analysis.

Connectivity verification is often decomposed into two portions failverification and cover verification. Fail verification checks for thecorrect propagation of signals under a specified mode condition. Coververification checks for the ability to initialization logic to sensitizea given mode condition. While decomposing connectivity verification intotwo portions enables greater scalability, it can become time consumingbecause it requires two different checks to occur. Issues also can occurwhen one signal is present in the cone of influence of another signalbeing checked.

SUMMARY

One or more embodiments of the invention provide a method for performingconnectivity verification of an integrated circuit device. Inembodiments of the invention, the method includes creating a directedgraph representation of integrated circuit device. The method canfurther include determining target gates within integrated circuitdevice. The method can further include creating a hierarchicalrepresentation of trace signals and determining nested trace signals.The method can further include determining one or more locations for cutpoints for non-nested trace signals. Thereafter, performing connectivityverification using the one or more locations for cut points.

One or more embodiments of the invention provide a method for performingconnectivity verification of an integrated circuit device. Inembodiments of the invention, the method includes receiving a modecondition for each entry in the hardware specification. The methodfurther includes determining if a lower module is referred to for eachentry. In the event that a lower module specification is present, aconditional cut point at the entry is created. Thereafter, performingconnectivity verification using the one or more locations for cutpoints.

One or more embodiments of the invention provide a computer programproduct for performing connectivity verification of an integratedcircuit device. In embodiments of the invention, the computer programproduct includes a computer-readable storage medium having programinstructions embodied therewith, wherein the computer-readable storagemedium is not a transitory signal per se. The program instructions arereadable by a processor system to cause the processor system to performa method. The method includes creating a directed graph representationof integrated circuit device. The method can further include determiningtarget gates within integrated circuit device. The method can furtherinclude creating a hierarchical representation of trace signals anddetermining nested trace signals. The method can further includedetermining one or more locations for cut points for non-nested tracesignals. Thereafter, performing connectivity verification using the oneor more locations for cut points.

BRIEF DESCRIPTION OF THE DRAWINGS

The subject matter of embodiments is particularly pointed out anddistinctly defined in the claims at the conclusion of the specification.The foregoing and other features and advantages are apparent from thefollowing detailed description taken in conjunction with theaccompanying drawings in which:

FIG. 1 depicts a block diagram illustrating dependencies between blocksbeing tested;

FIG. 2 depicts pseudocode of one or more embodiments;

FIG. 3 depicts pseudocode of one or more embodiments;

FIG. 4 depicts pseudocode of one or more embodiments;

FIG. 5 depicts pseudocode of one or more embodiments;

FIG. 6A depicts pseudocode of one or more embodiments;

FIG. 6B depicts pseudocode of one or more embodiments;

FIG. 7 depicts pseudocode of one or more embodiments;

FIG. 8 depicts a block diagram illustrating decomposition basedconnectivity verification of one or more embodiments;

FIG. 9 depicts a block diagram illustrating conditional overrides of oneor more embodiments;

FIG. 10 depicts a flow diagram of one or more embodiments; and

FIG. 11 depicts a flow diagram of one or more embodiments.

DETAILED DESCRIPTION

During the design phase, testing of an integrated circuit can involvethe creation of templates to verify the operation of each block and theconnectivity between blocks. A connectivity verification tool generatesstructural, behavioral, and temporal connectivity checks to verify theconnectivity implementation meets specifications. The source signal iscommonly known as a trace signal while the sink signal is commonly knownas the debug bus or trace array. The condition under which thereachability of source to sink being checked is commonly known as a modecondition. Each signal referenced in the mode condition is a modesignal.

The verification process involves inputting trace signals anddetermining if the trace array has the correct result. There can be “cutpoints” in the trace signal list as well as the configuration registers.These can specify mode conditions that control which trace signals arepropagated through the trace bus. These configuration/mode latches cancontain a large amount of initialization logic in order to select amongvarious internal trace signals to be analyzed by an on-chip evaluationcircuit.

This functionality allows one to observe transient events in a runningintegrated circuit device (or “chip”). In contrast, a scan-basedanalysis requires the chip to temporarily suspend functional operationwhile scanning. The logic being sampled by the trace signals also tendsto have a large fan-in (number of inputs), and possibly verysequentially deep behavior. In addition, as the initialization logic formode/configuration latches is significant, it is better to usenon-deterministic cut points on configuration latches to verifyreachability of a trace signal at trace bus.

Thus, the verification process has been decomposed into two portions: 1)FAIL verification, where the correct propagation of a trace signal totrace array under the specified mode condition is determined, in whichboth driving logic for trace signal and configuration latches (includingtheir initialization logic) are determined. Introducing non-determinismat mode signals over-approximates the mode conditions so that it willenable checking the reachability of trace signals for all the modeconditions described in the specification. 2) COVER verification, wherethe ability of the initialization logic to sensitize the necessary modecondition are tested by keeping the configuration latches and theirinitialization logic intact. Decomposing the verification problem intotwo enables much more scalable individual verification problems.

Turning now to a more detailed description of technologies that are morespecifically relevant to aspects of embodiments of the presentinvention, an issue that can occur during is that two separate testbench builds would be created and executed, one for each of the twoportions. It can be a time consuming process to create and execute twoseparate test bench builds. In addition, there is a possibility of atrace collision problem. A trace collision problem occurs when cuttingone trace signal can disturb the logic for another trace signal. Withreference to FIG. 1, a block diagram of such a situation is presented.

Process 100 illustrates the origin 102 of trace signals that are in thefan-in input to blocks 112 and 122. The output of block 112 is input toblock 114, so it is considered a fan-in of block 114. Similarly, theoutput of block 122 is a fan-in of block 24. The output of block 124also is a fan-in of block 114. So block 114 has two dependencies, block112 and block 124. Because the output of block 114 is a fan-in of block116, block 116 has input dependencies on each of the blocks 112, 114,122, and 124. While such a situation can be common, the result is that atester cannot cut a trace signal without disturbing the logic for inputsof other blocks. This can be termed a trace collision problem.

One method to avoid such problem is not to cut any of the trace signals.However, the verification task may then require not only the largeamount of logic implementing the debug buses, but all the originaldesign logic affecting these monitored trace signals—which can be muchlarger still and require a very large sequential depth for exhaustiveverification. In practice, this becomes prohibitively expensive forverification because exhaustive analysis of the arbitrary logic drivingthese cut points can be arbitrarily difficult. It is worth noting thatthere exist automated algorithms for simplifying a verification task byidentifying logic irrelevant to a given property, and inserting cutpoints to irrelevant logic. When importing the full design without anycut points, these techniques are, in practice, highly impractical forthis problem because cut point insertion uses dedicated formal analysisfor every property, and connectivity verification test benches oftenhave many thousands of individual properties, often spanning themajority of the logic in a chip. Without test bench-level cut pointing,the verification task can become thousands of times slower.

Another alternative is to selectively not insert cut points, in case atrace collision problem is found: i.e., inserting cut points at everytrace signal, and if any of the verification runs fail, to post-processlooking for nested cut points and to re-run verification of the failedproperties without the nested cut points. However, this alternativemeans that more than one verification run is used to make progress withthe verification. In the worst case, a separate model build and importper property would be used, which would greatly increase the overallverification resources.

Turning now to an overview of one or more embodiments of the invention,a method of verifying connectivity using conditional cut points ispresented. In addition, a method for verifying connectivity bydecomposing the hierarchy using conditional cut points is alsopresented.

As discussed above, one issue that can occur is that one might beinterested to see if signals from block 114 reach a specified block(after block 116, not illustrated). However, that might be difficultbecause signals from block 114 have to propagate through block 116first. In addition, signals from block 114 have dependencies from block112, block 122, and block 124. One might want to use a cut point to testblock 114 separately from blocks 112, 122, 124, and 116. However, such acut point might not operate correctly due to the dependencies betweenblocks 112, 114, 116, 122, and 124. One would have to include all thelogic for the other blocks just in order to determine if block 114 isoperating as intended.

With reference to FIG. 9, conditional cut points can be used to solvesuch a problem. Block diagram 900 illustrates the same situationillustrated with respect to block diagram 100 of FIG. 1. As such, thelast two digits of the reference number will be the same for FIG. 1 andFIG. 9 if the points are the same. Blocks 912 and 922 correspondgenerally to block 112 and 122 of FIG. 1.

Using the conditional cut point algorithms described herein, one is ableto set a cut point without having to worry about other inputs to acertain block. For example, as discussed above, block 114 has an inputdependency on blocks 112, 122, and 124. Under normal circumstances,block 114 cannot be tested without also testing blocks 122, and 124.With respect to FIG. 9, a multiplexer 954 is illustrated. The inputs tomultiplexer (also known as a “mux”) 954 are the cut point for block 914and a cloud 971. Cloud 971 represents the fan input or other inputs toblock 914. If one were performing a full test of all the blocks, onewould set mux 954 such that it receives the input from cloud 971.However, if one were only interested in performing connectivityverification of block 914, one would set mux 954 such that it onlyreceives the input from block 914. In this manner, one would be assumingthat the blocks 922, and 924 were all propagating signals correctly toblock 914. This can occur if one had already tested blocks 922, 924, and912. Since one is only testing block 914 in this example, the tester isonly concerned with the behavior of block 914 and would not have toperform connectivity testing of block 922, and 924 at the same time.Thus, prior to performing a connectivity verification, one would performa static analysis of the design to determine a dependency graph such asblock diagram 100 and insert conditional cutpoints with muxes as in 900.

A flowchart illustrating method 1000 is presented in FIG. 10. Method1000 is merely exemplary and is not limited to the embodiments presentedherein. Method 1000 can be employed in many different embodiments orexamples not specifically depicted or described herein. In someembodiments, the procedures, processes, and/or activities of method 1000can be performed in the order presented. In other embodiments, one ormore of the procedures, processes, and/or activities of method 1000 canbe combined or skipped. In one or more embodiments, method 1000 isperformed by a processor as it is executing instructions.

We first receive a hardware specification which is typically entered inRTL (Register Transfer Level) or behavioral VHDL or Verilog (block1002). This offers a high level representation of a logic design fromwhich lower-level representations, and ultimately actual wiring, can bederived through such a logic synthesis. Hardware generally consists ofsequential and combinational logic. Sequential logic is representedusing latches, registers, and RAM. Registers synchronize the circuit'scomputations to clock signal levels and transitions and can hold valuesto allow the circuit to be state-holding. Combinational logic performstransformations on the data values, implementing the logic functions ofthe circuit.

We next define our netlist format and create a directed graph (block1004). A netlist is a lower level representation of the circuit. Anetlist contains a finite directed graph with vertices representinggates, and edges representing interconnections between those gates. Thegates have associated functions, such as constants, primary inputs(hereafter referred to as RANDOM gates), combinational logic such as ANDgates, OR gates, NOR gates, NAND gates, XOR gates, XNOR gates, and thelike, and sequential elements (hereafter referred to as registers).Registers can have two associated components: their next-statefunctions, and their initial-value functions. Both are represented asother gates in the graph. Semantically, for a given register, the valueappearing at its initial-value gate at time “0” (“initialization” or“reset” time) will be applied as the value of the register itself; thevalue appearing at its next-state function gate at time “i” will beapplied to the register itself at time “i+1”. A set of valuations to allregisters in a netlist is called a “state”. A time step in verificationis sometimes referred to as a “cycle”, as is a convention from cyclesimulators.

A trace refers to a representation of a sequence of netlist evaluation,starting from an initial state and with gate evaluations and transitionsconsistent with the netlist semantics. A trace witnessing a propertyfailure is sometimes referred to as a “counterexample.”

Certain gates can be labeled “targets” (block 1006). Targets correlateto safety or cover properties, where the goal of the verificationprocess is to find a way to drive a logical “1” value to a target or toprove that no such assertion of the target is possible.

One may reason about a netlist using two-valued Boolean reasoning, whereRANDOM gates take nondeterministic Boolean values and other gatesevaluate in the standard manner, or three-valued reasoning which adds tothe Boolean 0, 1 a ternary “X” value usually representing an unknownvalue.

The trace signals are collected in a hierarchical manner (block 1008).This is depicted in pseudocode in FIG. 2, which represents an exemplarytemplate specification. The signal top_sig is a trace signal and exp 1aand exp 1b are sub-template references. The lower level trace signalsspecified in exp 1a and exp 1b are collected accordingly in a recursivefashion.

Once the trace signal list is retrieved, nested trace signals aredetected (block 1010). Pseudocode illustrating one method of detectingoverlapping or nested trace signals is presented in FIG. 3. First, aniterative DFS (Depth-First-Search) fan-out traversal (using thealgorithm presented as pseudocode in FIG. 4) is performed on each tracesignal of the design. Thereafter, a graph is created where each node isa trace signal, and each edge indicates a fan out connection from onetrace signal to another (block 1012). The graph can be similar to thatpresented with respect to FIG. 1. Nodes whose only incoming edge issourced by the “Root” (element 102) reflect non-nested trace signals.This is illustrated in pseudocode form in FIG. 5. These are safecandidates for placing a cut point. Once the cut point locations arefound, one can begin connectivity testing (block 1014). One can alsodetermine locations for conditional cut points based on the nested tracesignals. Once connectivity testing is complete and the integratedcircuit device passes, fabrication of the integrated circuit device canbegin. The finalized design of the integrated circuit is sent to afabrication facility, where the integrated circuit is finalized insilicon and associated packaging. Thereafter, the integrated circuitdevice can be used in an electronic device.

The algorithm presented as pseudocode in FIGS. 6A and 6B represent anexemplary full verification flow, utilizing each of the algorithmspresented in FIGS. 2-5. FIG. 6B is a continuation of the pseudocode fromFIG. 6A. The conditional cut point comprises a nondeterministic“stuttering input.” A stuttering input is a gate whose value can changeonly once per clock period. The stuttering input is driven only under aspecific condition, otherwise, the original logic is propagated. Agraphical representation of such a conditional cut point was describedearlier with respect to FIG. 9.

Once a trace signal dependency graph is created for the top-leveltemplate, FAIL or COVER properties are created in one of two differentmethods. In method 1, for each mode condition, all the trace signalsthat are propagated under that mode condition are enumerated (block1012). In this method, cut points are created only for non-nested tracesignals. Non-nested trace signals are nodes whose only incoming edge inthe global graph are “root”, such as block 112 of FIG. 1. Here, thecut-point is a nondeterministic stuttering input. For each of the modesignals, a conditional cut point is created such that for FAILverification, a nondeterministic constant (i.e., a “chicken switch” orrandomly-initialized latch that can never toggle) will be propagatedthrough the MUX, whereas for COVER verification (where reachability ofthe mode condition is checked), its original behavior will be preserved.

In method 2, a FAIL property is formed for each of trace signalseparately (block 1014). For all the mode conditions under which a tracesignal is involved, a property is formed to make sure that the tracesignal will be propagated to the correct endpoint (as per the specifiedmode condition) of the debug bus. In this method, conditional cut pointsare created on all the nested trace signals, i.e., those whose edges arenot directly connected to the root (such as each of blocks 114, 116, and124 from FIG. 1) (block 1016). For the non-nested trace signals,unconditional cut points are introduced similar to method 1. Again,cut-pointing on trace signals is done using nondeterministic “stutteringinputs”.

The COVER verification is performed in the same way as described inmethod 1—mode signals are not cut-pointed for COVER properties but arenondeterministic constants for FAIL properties.

In method 1, the number of FAIL properties is one per mode condition inthe template, whereas, in method 2, the number of FAIL properties is oneper trace signal. Each method has its advantage in terms of ability todebug and verification resources.

In some instances, one does not wish to work with a flattened mode ofanalysis of the blocks of an integrated circuit device. In someinstances, one wants to evaluate the blocks in a hierarchical manner.

Referring now to FIG. 8, a block diagram 800 illustrating an exemplaryhierarchically decomposed connectivity verification. Block diagram is ahierarchy of computing blocks. Block 802, 804, 806, and 808 are at onelevel. This could be, for example, the leaf level. Above them are blocks812 and 814. This could be, for example, the block level. At anotherlevel above that is block 822. This could be, for example, the unitlevel. At another level above that is block 832. This could be, forexample, the core level.

There are multiple paths between each level. For example, there are twopaths between block 802 and 812. There are two paths between block 804and 812. There are three paths between block 812 and block 822. In thepast, in order to determine if there is connectivity between block 802and block 822, one must test each possible path between block 802 andblock 822. That is, each of the two paths between block 802 and block812 must be tested in conjunction with each path between 812 and block822. That means 6 paths must be tested. In order to test the connectionbetween blocks 802 and block 832, one most test each of those 6 paths 3times (once for each path between block 822 and block 832). These 18tests would also have to be conducted for block 804, 806, and 808. Itshould be remembered that FIG. 8 is a greatly simplified block diagram.An actual block diagram of an actual integrated circuit device cancontain dozens of different blocks with many different levels, resultingin hundreds, thousands, or millions of different paths on which toperform connectivity verification.

However, given the capability to insert conditional cut points,described above with respect to FIG. 6, embodiments described hereinillustrate a framework suitable for hierarchical decomposition and thusgreater scalability.

For example, at block 812, 814, or 822, a conditional cut point can beintroduced, allowing checking each entity (block 802, 804, 806, or 808)independently for FAIL properties. Point 812 can be considered asub-template. For verification of sub-template 812, FAIL properties areformed between 802 to 812 and 804 to 812 and for these properties, thebehavior of the original net 812 will be propagated. Whereas for thehigher level template verification at block 822, a new primary input M1′will be propagated (from block 812 to block 822 to U1) through theconditional cut point. Each line between different points (e.g., thereare two lines between block 802 and block 812) represent different modeconditions under which signal T1 can propagate to M1. The cut-pointingand trace collision problems discussed in Algorithm 5 are directlyapplicable here also. Therefore, once one path between block 802 andblock 812 is confirmed, the other paths do not have to be tested to testconnectivity between block 802 and block 822. Similarly, once at leastone path between block 822 and block 832 is confirmed, the other pathsdo not need testing. In other words, only one connectivity test need beperformed from block 802 to block 832, once the intermediate paths inthe hierarchy are tested.

With respect to FIG. 7, pseudocode illustrating an algorithmillustrating a hierarchical decomposition-based connectivityverification framework is presented. In contrast to the flattened mode,with hierarchical decomposition, FAIL properties are self-contained withrespect to each template file, often located within a single designentity. In other words, paths are not concatenated across templates tospan logic entities often across a core.

Although the FAIL verification has been decomposed into smallersegments, in order to guarantee that the signal from block 802 can reachblock 832, COVER checks can be utilized for proper sensitization of fullmode condition across all entities—otherwise, the hierarchicallydecomposed FAIL check may not find an incompatible sensitization acrossentities. Therefore, cover checks are still performed in flattened mode.

A flowchart illustrating method 1100 is presented in FIG. 11. Method1100 is merely exemplary and is not limited to the embodiments presentedherein. Method 1100 can be employed in many different embodiments orexamples not specifically depicted or described herein. In someembodiments, the procedures, processes, and/or activities of method 1100can be performed in the order presented. In other embodiments, one ormore of the procedures, processes, and/or activities of method 1100 canbe combined or skipped. In one or more embodiments, method 1100 isperformed by a processor as it is executing instructions.

A hardware specification is received (block 1102). As above, this can beentered in RTL or behavioral VHDL or Verilog or similar format. Thisoffers a high level representation of a logic design from whichlower-level representations, and ultimately actual wiring, can bederived through such a logic synthesis. For each entry in thespecification, a mode condition is retrieved (block 1104). If a lowermodule specification is referred to, a conditional cut point is created(block 1106). If the entry is instead a trace signal, the trace signalis added to the list to be checked (block 1108). Thereafter, methodssuch as those described above with respect to FIG. 10 can be performedto perform a connectivity verification.

Fabrication foundries (“fabs”) can manufacture integrated circuitdevices based on the design layouts (such as those created using one ormore embodiments) using a photolithographic process. Photolithography isan optical printing and fabrication process by which patterns on aphotolithographic mask (also known as a photomask) are imaged anddefined onto a photosensitive layer coating a substrate. To fabricate anintegrated circuit device, photomasks as created using the integratedcircuit design layout as a template. The photomasks contain the variousgeometries (i.e., features) of the integrated circuit design layout. Thevarious geometries contained on the photomasks correspond to the variousbase physical integrated circuit elements that comprise functionalcircuit components of n integrated circuit, such as transistor,interconnect wiring, via pads, as well as other elements that are notfunctional circuit elements, but that are used to facilitate, enhance,or track various manufacturing processes. Through sequential use of thevarious photomasks corresponding to a given integrated circuit in afabrication process, a large number of material layers of various shapesand thicknesses, with various conductive and insulating processes, maybe built up to form the overall integrated circuit and the circuitswithin the integrated circuit design layout.

Various embodiments of the present invention are described herein withreference to the related drawings. Alternative embodiments can bedevised without departing from the scope of embodiments of the presentinvention. It is noted that various connections and positionalrelationships (e.g., over, below, adjacent, etc.) are set forth betweenelements in the following description and in the drawings. Theseconnections and/or positional relationships, unless specified otherwise,can be direct or indirect, and embodiments of the present invention arenot intended to be limiting in this respect. Accordingly, a coupling ofentities can refer to either a direct or an indirect coupling, and apositional relationship between entities can be a direct or indirectpositional relationship. As an example of an indirect positionalrelationship, references in the present description to forming layer “A”over layer “B” include situations in which one or more intermediatelayers (e.g., layer “C”) is between layer “A” and layer “B” as long asthe relevant characteristics and functionalities of layer “A” and layer“B” are not substantially changed by the intermediate layer(s).

The following definitions and abbreviations are to be used for theinterpretation of the claims and the specification. As used herein, theterms “comprises,” “comprising,” “includes,” “including,” “has,”“having,” “contains” or “containing,” or any other variation thereof,are intended to cover a non-exclusive inclusion. For example, acomposition, a mixture, process, method, article, or apparatus thatcomprises a list of elements is not necessarily limited to only thoseelements but can include other elements not expressly listed or inherentto such composition, mixture, process, method, article, or apparatus.

Additionally, the term “exemplary” is used herein to mean “serving as anexample, instance or illustration.” Any embodiment or design describedherein as “exemplary” is not necessarily to be construed as preferred oradvantageous over other embodiments or designs. The terms “at least one”and “one or more” are understood to include any integer number greaterthan or equal to one, i.e. one, two, three, four, etc. The terms “aplurality” are understood to include any integer number greater than orequal to two, i.e. two, three, four, five, etc. The term “connection”can include an indirect “connection” and a direct “connection.”

References in the specification to “one embodiment,” “an embodiment,”“an example embodiment,” etc., indicate that the embodiment describedcan include a particular feature, structure, or characteristic, butevery embodiment may or may not include the particular feature,structure, or characteristic. Moreover, such phrases are not necessarilyreferring to the same embodiment. Further, when a particular feature,structure, or characteristic is described in connection with anembodiment, it is submitted that it is within the knowledge of oneskilled in the art to affect such feature, structure, or characteristicin connection with other embodiments whether or not explicitlydescribed.

For purposes of the description hereinafter, the terms “upper,” “lower,”“right,” “left,” “vertical,” “horizontal,” “top,” “bottom,” andderivatives thereof shall relate to the described structures andmethods, as oriented in the drawing figures. The terms “overlying,”“atop,” “on top,” “positioned on” or “positioned atop” mean that a firstelement, such as a first structure, is present on a second element, suchas a second structure, wherein intervening elements such as an interfacestructure can be present between the first element and the secondelement. The term “direct contact” means that a first element, such as afirst structure, and a second element, such as a second structure, areconnected without any intermediary conducting, insulating orsemiconductor layers at the interface of the two elements. It should benoted that the term “selective to,” such as, for example, “a firstelement selective to a second element,” means that the first element canbe etched and the second element can act as an etch stop.

The phrase “selective to,” such as, for example, “a first elementselective to a second element,” means that the first element can beetched and the second element can act as an etch stop.

The terms “about,” “substantially,” “approximately,” and variationsthereof, are intended to include the degree of error associated withmeasurement of the particular quantity based upon the equipmentavailable at the time of filing the application. For example, “about”can include a range of ±8% or 5%, or 2% of a given value.

The flowchart and block diagrams in the Figures illustrate possibleimplementations of fabrication and/or operation methods according tovarious embodiments of the present invention. Variousfunctions/operations of the method are represented in the flow diagramby blocks. In some alternative implementations, the functions noted inthe blocks can occur out of the order noted in the Figures. For example,two blocks shown in succession can, in fact, be executed substantiallyconcurrently, or the blocks can sometimes be executed in the reverseorder, depending upon the functionality involved.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments described. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the describedembodiments. The terminology used herein was chosen to best explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdescribed herein.

What is claimed is:
 1. A method for performing connectivity verificationof an integrated circuit device comprising: determining target gateswithin the integrated circuit device; finding trace signals within theintegrated circuit device; determining nested trace signals; determiningone or more locations on the integrated circuit device for cut pointsfor non-nested trace signals; and performing connectivity verificationusing the one or more locations for cut points.
 2. The method of claim1, further comprising: creating a conditional cut point for each nestedtrace signal.
 3. The method of claim 2, further comprising: placing amultiplexer at one or more of the conditional cut points; and performingconnectivity verification at the conditional cut point.
 4. The method ofclaim 3, wherein: the multiplexer is configured with two inputs suchthat a nondeterministic constant is at a first input and a signal inputinto the multiplexer is a second input.
 5. The method of claim 1,further comprising: creating a directed graph representation of theintegrated circuit device by defining blocks of the integrated circuitdevice; and determining interconnections of the blocks.
 6. The method ofclaim 5, wherein: the blocks are chosen from registers, AND gates, ORgates, NOR gates, NAND gates, XOR gates, constants, and primary inputgates.
 7. The method of claim 5, wherein: determining nested tracesignals comprises performing an iterative depth first search fan-outtraversal of trace signals from the directed graph.
 8. The method ofclaim 7, further comprising: creating a graph wherein nodes of the graphare trace signals and edges of the graph are connections from one tracesignal to another.
 9. The method of claim 1, wherein: the connectivityverification is configured to verify proper propagation of signalsbetween blocks within the integrated circuit device.
 10. The method ofclaim 1, wherein: performing connectivity verification comprises FAILverification configured to check for correct propagation of a tracesignal to a trace array.
 11. The method of claim 1, wherein: performingconnectivity verification comprises COVER verification configured tocheck for the ability of initialization logic to sensitize a modecondition.
 12. A method for performing connectivity verification of anintegrated circuit device comprising: receiving a mode condition foreach entry in hardware specification of the integrated circuit device;determining whether a lower module is referred to for each entry; basedon determining that a lower module specification is present, creating aconditional cut point at the entry; and performing connectivityverification using one or more locations for cut points.
 13. The methodof claim 12, further comprising: placing a multiplexer at one or more ofthe conditional cut points; and performing connectivity verification atthe conditional cut point.
 14. The method of claim 13, wherein: themultiplexer is configured with two inputs such that a nondeterministicconstant is at a first input and a signal input into the multiplexer isa second input.
 15. The method of claim 12, further comprising: creatinga directed graph representation of integrated circuit device.
 16. Themethod of claim 15, wherein: creating the directed graph representationcomprises defining blocks of the integrated circuit device; anddetermining interconnections of the blocks.
 17. The method of claim 16,wherein: the blocks are chosen from registers, AND gates, OR gates, NORgates, NAND gates, XOR gates, constants, and primary input gates. 18.The method of claim 15, wherein: determining nested trace signalscomprises performing an iterative depth first search fan-out traversalof trace signals from the directed graph.
 19. The method of claim 18,further comprising: creating a graph wherein nodes of the graph aretrace signals and edges of the graph are connections from one tracesignal to another.
 20. A computer program product for performingconnectivity verification of an integrated circuit device comprising: acomputer-readable storage medium having program instructions embodiedtherewith, wherein the computer-readable storage medium is not atransitory signal per se, the program instructions readable by aprocessor system to cause the processor system to perform a methodcomprising: receiving a hardware definition of integrated circuitdevice; determining target gates within the integrated circuit device;finding trace signals within the integrated circuit device; determiningnested trace signals; determining one or more locations on theintegrated circuit device for cut points for non-nested trace signals;and performing connectivity verification using the one or more locationsfor cut points.